<template>
  <view class="login-container">
    <view class="logo">
      <image 
        class="avatar-img" 
        src="/static/neiko.jpeg"
        mode="widthFix"
      ></image>
    </view>
    
    <view class="form-group">
      <view class="input-item">
        <text>用户:</text>
        <input v-model="username" type="text" placeholder="请输入用户名" />
      </view>
      <view class="input-item">
        <text>密码:</text>
        <input v-model="password" type="password" placeholder="请输入6位数字密码" />
      </view>
      
      <view class="btn-group">
        <button class="reset-btn" @click="resetForm">重置</button>
        <button class="login-btn" @click="handleLogin">登录</button>
      </view>
      
      <button class="register-btn" @click="toRegister">注册</button>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    resetForm() {
      this.username = ''
      this.password = ''
    },
    async handleLogin() {
      // 1. 基础校验
      if (!this.username || !this.password) {
        uni.showToast({ title: '请输入用户名和密码', icon: 'none' })
        return
      }
      
      // 2. 校验密码格式（和注册页一致：6位数字）
      const passwordReg = /^\d{6}$/;
      if (!passwordReg.test(this.password)) {
        uni.showToast({ title: '密码必须是6位数字', icon: 'none' })
        return
      }
      
      try {
        // 3. 显示加载提示
        uni.showToast({
          title: '登录中...',
          icon: 'loading',
          mask: true
        });
        
        // 4. 调用云函数校验用户信息（核心修改：真实校验）
        const res = await uniCloud.callFunction({
          name: 'loginUser', // 对应新建的登录云函数
          data: {
            name: this.username, // 和注册时的字段名保持一致
            password: this.password
          }
        });
        
        // 关闭加载提示
        uni.hideToast();
        
        // 5. 处理云函数返回结果
        if (res.result.code === 0) {
          // 登录成功：存储用户完整信息（包含注册时的电话/邮箱/地址）
          uni.setStorageSync('userInfo', {
            username: this.username,
            token: 'token-' + Date.now(), // 实际项目建议用云函数返回的token
            ...res.result.userInfo // 包含注册时的phone/email/address
          });
          
          // 更新tabbar并跳转
          uni.setTabBarItem({ index: 3, text: '我的' });
          uni.showToast({ title: '登录成功', icon: 'success' });
          
          const pages = getCurrentPages();
          if (pages.length > 1) {
            uni.navigateBack({ delta: 1 });
          } else {
            uni.redirectTo({ url: '/pages/mine/mine' });
          }
        } else {
          // 登录失败（用户名不存在/密码错误）
          uni.showToast({ title: res.result.msg, icon: 'none' });
        }
      } catch (err) {
        // 捕获网络/云函数调用异常
        uni.hideToast();
        console.error('登录请求失败：', err);
        uni.showToast({ title: '登录失败，请重试', icon: 'none' });
      }
    },
    toRegister() {
      uni.navigateTo({ url: '/pages/register/register' });
    }
  }
}
</script>

<style scoped>
.login-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 50rpx 30rpx;
  background-color: #f5f5f5;
  min-height: 100vh;
  box-sizing: border-box;
}

.logo {
  margin-bottom: 80rpx;
  width: 150rpx;
  height: 150rpx;
  display: flex;
  align-items: center;
  justify-content: center;
}

.avatar-img {
  width: 150rpx;
  height: 150rpx;
  border-radius: 50%;
  border: 4rpx solid #fff;
  box-shadow: 0 4rpx 10rpx rgba(255, 107, 107, 0.3);
  background-color: #ffeeee;
}

.form-group {
  width: 100%;
  background-color: #fff;
  padding: 40rpx;
  border-radius: 20rpx;
  box-shadow: 0 2rpx 10rpx rgba(0,0,0,0.05);
  box-sizing: border-box;
}

.input-item {
  display: flex;
  align-items: center;
  padding: 20rpx 0;
  border-bottom: 1px solid #eee;
  margin-bottom: 30rpx;
}

.input-item text {
  width: 120rpx;
  font-size: 32rpx;
}

.input-item input {
  flex: 1;
  font-size: 32rpx;
  padding: 10rpx 0;
}

.btn-group {
  display: flex;
  gap: 30rpx;
  margin: 60rpx 0;
}

.reset-btn {
  flex: 1;
  background-color: #f5f5f5;
  color: #333;
  height: 80rpx;
  line-height: 80rpx;
  border-radius: 40rpx;
}

.login-btn {
  flex: 1;
  background-color: #4fc3f7;
  color: white;
  height: 80rpx;
  line-height: 80rpx;
  border-radius: 40rpx;
}

.register-btn {
  width: 100%;
  background-color: transparent;
  color: #ff6b6b;
  height: 80rpx;
  line-height: 80rpx;
  border: 1px solid #ff6b6b;
  border-radius: 40rpx;
}
</style>